(* Copyright (C) 2010 School of Software Engineering, 
 * University of Science and Technology of China.
 *
 * This code is released under a BSD-style license.
 * See the file LICENSE for details.
 *)

signature CONTROL_STRUCTS =
sig
end

signature CONTROL =
sig
    include CONTROL_STRUCTS
    
datatype verbose
  = L0
  | L1
  | L2
  | L3

datatype level
  = Normal
  | Advanced

datatype opt 
  = String of string -> unit

val expert: bool ref
val fileName: string ref
val keepFile: bool ref
val verbose: verbose ref
val diag: string option ref

val trace: verbose * string * ('a -> 'b) -> 'a -> 'b

val pass: {v: verbose,
           name: string,
           action: unit -> 'a,
           display: 'a -> Layout.t} -> 'a
          
end
